<?php


namespace app\dao;


abstract class BaseDao
{
    abstract protected function setModel();

    /**
     * 获取模型
     * @return mixed
     */
    protected function getModel()
    {
        return app()->make($this->setModel());
    }

    /**
     * 插入数据
     * @param array $data
     * @return mixed
     */
    public function save(array $data)
    {
        $model = $this->getModel()->create($data);
        return $this->getModel()->find($model->id);
    }

    public function find(int $id) {
        return $this->getModel()->find($id);
    }

    public function exists($id)
    {
        return $this->getModel()->where('id', '=', $id)->count() > 0;
    }

    public function existsIn($ids)
    {
        return $this->getModel()->whereIn('id', $ids)->count() == count($ids);
    }

    public function getIn($ids)
    {
        return $this->getModel()->whereIn('id', $ids)->select();
    }

    public function delete($id){
        $this->getModel()->destroy($id);
    }

    public function edit($id, $data){
        $this->getModel()->where('id', $id)->update($data);
        return $this->getModel()->find($id);
    }
}